Micron Document
🎖️GitЯра🎖️


Displaying Raw • Download

.specify/scripts/bash/setup-tasks.sh b2a8377bbb01a5875eba4b12f6f1c7e7d9e60a91 (b2a8377b) Text, 3.46 KB

T8b949e#!/usr/bin/env bash

Tffa657set -e

T8b949e# Parse command line arguments
Te6edf3JSON_MODETff7b72=Tffa657false

Tff7b72for arg Tff7b72in Ta5d6ff"Te6edf3$@Ta5d6ff"Tb4b4b4; Tff7b72do
Tff7b72case Ta5d6ff"Te6edf3$argTa5d6ff" Tff7b72in
--jsonTff7b72) Te6edf3JSON_MODETff7b72=Tffa657true Tb4b4b4;Tb4b4b4;
--helpTb4b4b4|-hTff7b72)
Tffa657echo Ta5d6ff"Ta5d6ffUsage: Te6edf3$0Ta5d6ff [--json]Ta5d6ff"
Tffa657echo Ta5d6ff" --json Output results in JSON format"
Tffa657echo Ta5d6ff" --help Show this help message"
Tffa657exit T79c0ff0
Tb4b4b4;Tb4b4b4;
*Tff7b72) Tffa657echo Ta5d6ff"Ta5d6ffERROR: Unknown option 'Te6edf3$argTa5d6ff'Ta5d6ff" >Tb4b4b4&T79c0ff2Tb4b4b4; Tffa657exit T79c0ff1 Tb4b4b4;Tb4b4b4;
Tff7b72esac
Tff7b72done

T8b949e# Source common functions
Te6edf3SCRIPT_DIRTff7b72=Ta5d6ff"Tff7b72$(Te6edf3CDPATHTff7b72=Ta5d6ff"" Tffa657cd Ta5d6ff"Tff7b72$(dirname Ta5d6ff"Tffd700${Te6edf3BASH_SOURCETb4b4b4[0]Tffd700}Ta5d6ff"Tff7b72)Ta5d6ff" Tff7b72&& Tffa657pwdTff7b72)Ta5d6ff"
Tffa657source Ta5d6ff"Te6edf3$SCRIPT_DIRTa5d6ff/common.shTa5d6ff"

T8b949e# Get feature paths
Te6edf3_paths_outputTff7b72=Tff7b72$(get_feature_pathsTff7b72) Tff7b72|| Tff7b72{ Tffa657echo Ta5d6ff"ERROR: Failed to resolve feature paths" >Tb4b4b4&T79c0ff2Tb4b4b4; Tffa657exit T79c0ff1Tb4b4b4; Tff7b72}
Tffa657eval Ta5d6ff"Te6edf3$_paths_outputTa5d6ff"
Tffa657unset _paths_output

T8b949e# Validate branch
T8b949e# If feature.json pins an existing feature directory, branch naming is not required.
Tff7b72if ! feature_json_matches_feature_dir Ta5d6ff"Te6edf3$REPO_ROOTTa5d6ff" Ta5d6ff"Te6edf3$FEATURE_DIRTa5d6ff"Tb4b4b4; Tff7b72then
check_feature_branch Ta5d6ff"Te6edf3$CURRENT_BRANCHTa5d6ff" Ta5d6ff"Te6edf3$HAS_GITTa5d6ff" Tff7b72|| Tffa657exit T79c0ff1
Tff7b72fi

Tff7b72if Tff7b72[Tff7b72[ ! -f Ta5d6ff"Te6edf3$IMPL_PLANTa5d6ff" Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"Ta5d6ffERROR: plan.md not found in Te6edf3$FEATURE_DIRTa5d6ff" >Tb4b4b4&T79c0ff2
Tffa657echo Ta5d6ff"Run /speckit.plan first to create the implementation plan." >Tb4b4b4&T79c0ff2
Tffa657exit T79c0ff1
Tff7b72fi

Tff7b72if Tff7b72[Tff7b72[ ! -f Ta5d6ff"Te6edf3$FEATURE_SPECTa5d6ff" Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"Ta5d6ffERROR: spec.md not found in Te6edf3$FEATURE_DIRTa5d6ff" >Tb4b4b4&T79c0ff2
Tffa657echo Ta5d6ff"Run /speckit.specify first to create the feature structure." >Tb4b4b4&T79c0ff2
Tffa657exit T79c0ff1
Tff7b72fi

T8b949e# Build available docs list
Te6edf3docsTff7b72=Tff7b72(Tff7b72)
Tff7b72[Tff7b72[ -f Ta5d6ff"Te6edf3$RESEARCHTa5d6ff" Tff7b72]Tff7b72] Tff7b72&& Te6edf3docsTff7b72+=Tff7b72(Ta5d6ff"research.md"Tff7b72)
Tff7b72[Tff7b72[ -f Ta5d6ff"Te6edf3$DATA_MODELTa5d6ff" Tff7b72]Tff7b72] Tff7b72&& Te6edf3docsTff7b72+=Tff7b72(Ta5d6ff"data-model.md"Tff7b72)
Tff7b72if Tff7b72[Tff7b72[ -d Ta5d6ff"Te6edf3$CONTRACTS_DIRTa5d6ff" Tff7b72]Tff7b72] Tff7b72&& Tff7b72[Tff7b72[ -n Ta5d6ff"Tff7b72$(ls -A Ta5d6ff"Te6edf3$CONTRACTS_DIRTa5d6ff" T79c0ff2>/dev/nullTff7b72)Ta5d6ff" Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
Te6edf3docsTff7b72+=Tff7b72(Ta5d6ff"contracts/"Tff7b72)
Tff7b72fi
Tff7b72[Tff7b72[ -f Ta5d6ff"Te6edf3$QUICKSTARTTa5d6ff" Tff7b72]Tff7b72] Tff7b72&& Te6edf3docsTff7b72+=Tff7b72(Ta5d6ff"quickstart.md"Tff7b72)

T8b949e# Resolve tasks template through override stack
Te6edf3TASKS_TEMPLATETff7b72=Tff7b72$(resolve_template Ta5d6ff"tasks-template" Ta5d6ff"Te6edf3$REPO_ROOTTa5d6ff"Tff7b72) Tff7b72|| Tffa657true
Tff7b72if Tff7b72[Tff7b72[ -z Ta5d6ff"Te6edf3$TASKS_TEMPLATETa5d6ff" Tff7b72]Tff7b72] Tff7b72|| Tff7b72[Tff7b72[ ! -f Ta5d6ff"Te6edf3$TASKS_TEMPLATETa5d6ff" Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"Ta5d6ffERROR: Could not resolve required tasks-template from the template override stack for Te6edf3$REPO_ROOTTa5d6ff" >Tb4b4b4&T79c0ff2
Tffa657echo Ta5d6ff"Template 'tasks-template' was not found in any supported location (overrides, presets, extensions, or shared core). Add an override at .specify/templates/overrides/tasks-template.md, or run 'specify init' / reinstall shared infra to restore the core .specify/templates/tasks-template.md template." >Tb4b4b4&T79c0ff2
Tffa657exit T79c0ff1
Tff7b72fi

T8b949e# Output results
Tff7b72if Te6edf3$JSON_MODETb4b4b4; Tff7b72then
Tff7b72if has_jqTb4b4b4; Tff7b72then
Tff7b72if Tff7b72[Tff7b72[ Tffd700${#Te6edf3docsTb4b4b4[@]Tffd700} -eq T79c0ff0 Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
Te6edf3json_docsTff7b72=Ta5d6ff"[]"
Tff7b72else
Te6edf3json_docsTff7b72=Tff7b72$(Tffa657printf Ta5d6ff'%s\n' Ta5d6ff"Tffd700${Te6edf3docsTb4b4b4[@]Tffd700}Ta5d6ff" Tb4b4b4| jq -R . Tb4b4b4| jq -s .Tff7b72)
Tff7b72fi
jq -cn Tffea00\
--arg feature_dir Ta5d6ff"Te6edf3$FEATURE_DIRTa5d6ff" Tffea00\
--argjson docs Ta5d6ff"Te6edf3$json_docsTa5d6ff" Tffea00\
--arg tasks_template Ta5d6ff"Tffd700${Te6edf3TASKS_TEMPLATETff7b72:-Tffd700}Ta5d6ff" Tffea00\
Ta5d6ff'{FEATURE_DIR:$feature_dir,AVAILABLE_DOCS:$docs,TASKS_TEMPLATE:$tasks_template}'
Tff7b72else
Tff7b72if Tff7b72[Tff7b72[ Tffd700${#Te6edf3docsTb4b4b4[@]Tffd700} -eq T79c0ff0 Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
Te6edf3json_docsTff7b72=Ta5d6ff"[]"
Tff7b72else
Te6edf3json_docsTff7b72=Tff7b72$(Tff7b72for d Tff7b72in Ta5d6ff"Tffd700${Te6edf3docsTb4b4b4[@]Tffd700}Ta5d6ff"Tb4b4b4; Tff7b72do Tffa657printf Ta5d6ff'"%s",' Ta5d6ff"Tff7b72$(json_escape Ta5d6ff"Te6edf3$dTa5d6ff"Tff7b72)Ta5d6ff"Tb4b4b4; Tff7b72doneTff7b72)
Te6edf3json_docsTff7b72=Ta5d6ff"Ta5d6ff[Tffd700${Te6edf3json_docsTb4b4b4%,Tffd700}Ta5d6ff]Ta5d6ff"
Tff7b72fi
Tffa657printf Ta5d6ff'{"FEATURE_DIR":"%s","AVAILABLE_DOCS":%s,"TASKS_TEMPLATE":"%s"}\n' Tffea00\
Ta5d6ff"Tff7b72$(json_escape Ta5d6ff"Te6edf3$FEATURE_DIRTa5d6ff"Tff7b72)Ta5d6ff" Ta5d6ff"Te6edf3$json_docsTa5d6ff" Ta5d6ff"Tff7b72$(json_escape Ta5d6ff"Tffd700${Te6edf3TASKS_TEMPLATETff7b72:-Tffd700}Ta5d6ff"Tff7b72)Ta5d6ff"
Tff7b72fi
Tff7b72else
Tffa657echo Ta5d6ff"Ta5d6ffFEATURE_DIR: Te6edf3$FEATURE_DIRTa5d6ff"
Tffa657echo Ta5d6ff"Ta5d6ffTASKS_TEMPLATE: Tffd700${Te6edf3TASKS_TEMPLATETff7b72:-Te6edf3notTb4b4b4 foundTffd700}Ta5d6ff"
Tffa657echo Ta5d6ff"AVAILABLE_DOCS:"
check_file Ta5d6ff"Te6edf3$RESEARCHTa5d6ff" Ta5d6ff"research.md"
check_file Ta5d6ff"Te6edf3$DATA_MODELTa5d6ff" Ta5d6ff"data-model.md"
check_dir Ta5d6ff"Te6edf3$CONTRACTS_DIRTa5d6ff" Ta5d6ff"contracts/"
check_file Ta5d6ff"Te6edf3$QUICKSTARTTa5d6ff" Ta5d6ff"quickstart.md"
Tff7b72fi

Served by rngit 1.5.2 - Generated in 0.05s